#include<iostream>
using namespace std;
class A
{
private:
   int _a; /* data */
public:
    A(int a);

};

A::A(int a)
:_a(a)
{
    cout<<"A()"<<endl;
}
void test()
{
    //对应malloc/free，除了用法区别以外没有其他区别
    //申请一个int空间
   int *p1=new int;
   delete p1;
  //申请一个int空间，并初始化成0
  int *p2=new int(0);
  delete p2;
//申请一块空间
int *p3=new int[10];
  delete[] p3;
//申请一块空间，初始化
int *p4=new int[10]{1,2,3,4};
delete[] p4;
//对于自定义类型就有区别
//new的对象会被初始化，会调用构造与析构
 
}
/* void test2()
{
    //c语言失败
    int *p1=(int*)malloc(1024*100);
    while(1)
    {
    if(!p1)
    {
        cout<<p1<<endl;
    }else
    {
        cout<<"申请失败"<<endl;
        break;
    }
    }
} */
void test2()
{
    //new失败--不需要检查返回值

    int *p1=(int*)malloc(1024*100);
    while(1)
    {
   char*p1=new char[1024*1024*1024];
   cout<<(void*)p1<<endl;
    }
} 
int main()
{
    //一定要配套使用，否则会出现各种情况
    //A*p3 =new A[10];
    //delete p3;
 //test();
 try
 {
    test2();
 }
 catch(exception& e)
 {
   cout << e.what() << '\n';
 }
 
    return 0;
}